package elementos_grafo;
import java.util.HashMap;
import java.util.LinkedList;



public class Grafo {
	
	private String nombre;
	private Conjunto vertices;
	private Conjunto lados;
	
	public Grafo(){
		vertices = new Conjunto();
		lados = new Conjunto();
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public Conjunto getVertices() {
		return vertices;
	}
	public void setVertices(Conjunto vertices) {
		this.vertices = vertices;
	}
	public Conjunto getLados() {
		return lados;
	}
	public void setLados(Conjunto lados) {
		this.lados = lados;
	}
	

	public HashMap<Vertice,LinkedList<Vertice>> obtenerListaDeAdyacencia(){
		
		HashMap<Vertice,LinkedList<Vertice>> listaAdyacencia = new HashMap<Vertice,LinkedList<Vertice>>();
		
		LinkedList<Vertice> listaDeAdyacencia= null;
		
		for(int i = 0; i < vertices.getElementos().size(); i++){
			Vertice vertice = (Vertice)vertices.getElementos().get(i);
			listaDeAdyacencia = new LinkedList<Vertice>();
			for(int j = 0; j < lados.getElementos().size(); j++){
				Lado lado = (Lado)lados.getElementos().get(j);
				if(vertice.getNombre().equals(lado.getU().getNombre())){
					listaDeAdyacencia.addFirst((Vertice)lado.getV());
				}
			}
			listaAdyacencia.put(vertice, listaDeAdyacencia);
		}
		return listaAdyacencia;
	}
	
	public int peso(Vertice u, Vertice v){
		int peso=-1;
		for(Object objLado : lados.getElementos()){
			Lado lado = (Lado)objLado;
			if(lado.getU().equals(u) && lado.getV().equals(v))
				peso = lado.getPeso();
		}
		return peso;
	}
}
